--定义优惠券id
local voucherId = ARGV[1]
--定义用户id
local userId = ARGV[2]
--定义订单id
local orderId = ARGV[3]
--库存key
local stockKey = 'seckill:stock:' .. voucherId
--订单key
local orderKye = 'seckill:order:' .. voucherId

--判断redis里库存是否充足
    --如果不足 返回 1
if(tonumber(redis.call('get',stockKey)) < 1) then
    return 1
end
--判断用户是否重复下单
    --如果用户重复下单 返回 2
if(redis.call('sismember',orderKye,userId) == 1) then
    return 2
end

--若以上判断都通过 则将userId存入当前优惠券的set集合,并扣除库里的优惠券
redis.call('incrby',stockKey,-1)
redis.call('sadd',orderKye,userId)
--将信息存入消息队列当中  redis消息队列的语法：xadd "消息的id" k1 v1 k2 v2
redis.call('xadd','stream.orders','*','userId',userId,'voucherId',voucherId,'id',orderId)
return 0